package string;

/**
 * 为了解决修改字符串性能低下的问题，java提供了专门用于修改字符串的API:StringBuilder
 * StringBuilder内部维护一个可变的char数组，修改内容性能优异。
 * 并且提供了便于修改字符串内容的相关方法（增删改插）。
 *
 * StringBuilder与StringBuffer
 * StringBuilder始于JDK1.5,  StringBuffer始于JDK1.0。
 *                StringBuffer线程安全。
 */
public class StringBuilderDemo1 {
    public static void main(String[] args) {
        String line = "好好学习";
        //内部表示一个空字符串String builder = new StringBuilder();
        StringBuilder builder = new StringBuilder(line);//将给定的字符串内容复制到StringBuilder中

        //append():将给的内容追加到字符串末尾
        builder.append(",天天向上!");
        System.out.println(builder);//好好学习,天天向上!

        //replace():替换部分内容
        builder.replace(7,9,"阿巴阿巴阿巴");
        System.out.println(builder);//好好学习,天天阿巴阿巴阿巴!

        //delete():删除指定位置
        builder.delete(0,7);
        System.out.println(builder);//阿巴阿巴阿巴!

        //insert():在指定位置插入指定内容
        builder.insert(2,",");
        System.out.println(builder);//阿巴,阿巴阿巴!

        //reverse():反转字符串
        System.out.println(builder.reverse());//!巴阿巴阿,巴阿

        /*
        StringBuilder提供了String中常用的操作方法
        length,indexOf,charAt等等
        StringBuilder是修改String的一个工具而不是String类
        因此使用他修改后若希望得到改后的String，可以通过调用他的toString方法获取
         */
        line = builder.toString();
        System.out.println(line);
    }
}
